package cn.itcast.dao;



import cn.itcast.entity.OrderQueryPageBean;
import cn.itcast.pojo.Order;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface OrderDao {

    /**
     * 查询用户是否在此日期已经预约过
     * @param idCard      身份证
     * @param formatDate  预约日期
     * @return
     */
    Order queryOrderByidCardAndDate(@Param("idCard") String idCard, @Param("formatDate")String formatDate);

    /**
     * 添加预约用户的信息
     * @param order
     */
    void submit(Order order);

    /**
     * 根据order对象的id查询订单所需要的信息
     * @param id
     * @return
     */
//    OrderVo queryOrderVoByOrderId(String id);

    /**
     * 根据id查询用户信息
     * @param id
     * @return
     */
    Order findByid(String id);

    /**
     * 根据用户的会员id查询用户的所有订单
     * @param memberId
     * @return
     */
    List<Order> findUserAll(Integer memberId);


    /**
     * 保存预约基本信息
     *
     * @param order
     */
    int add(Order order);


    /**
     * 根据预约id查询预约信息
     *
     * @param id
     * @return
     */
    Order findById(String id);


    /**
     * 根据Id更新预约基本信息
     *
     * @param order
     */
    void update(Order order);


    /**
     * 查询所有预约数据
     *
     * @return
     */
    List<Order> findAll();


    /**
     * 分页带查询条件
     * @return
     */
    Page<Order> selectByCondition(OrderQueryPageBean orderQueryPageBean);


    /**
     * 修改到诊
     * @param id
     */
    void updateArrival(String id);

    //今日预约数
    Integer findOrderCountByDate(String today);
    //今日到诊数
    Integer findVisitsCountByDate(String today);
    //本周的预约数
    Integer findOrderCountWeekAfterDate(String thisWeekMonday);
    //本周到诊数
    Integer findVisitsCountWeekAfterDate(String thisWeekMonday);
    //本月预约数
    Integer findOrderCountMonthAfterDate(String firstDay4ThisMonth);
    //本月到诊数
    Integer findVisitsCountMonthAfterDate(String firstDay4ThisMonth);
    //查询热门套餐
    List<Map> findhotSetmeal();

}
